package pharao.domain;

import java.util.Collection;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

@Entity
public class Prüfung {

	/**
	 * definiert eine Bronze-Prüfung
	 * @uml.property  name="TYP_BRONZE" readOnly="true"
	 */
	public static final int typ_bronze = 2;
	
	/**
	 * definiert eine Gold-Prüfung
	 * @uml.property  name="TYP_GOLD"
	 */
	public static final int typ_gold = 0;

	/**
	 * definiert eine Silber-Prüfung
	 * @uml.property  name="TYP_SILBER"
	 */
	public static final int typ_silber = 1;

	/**
	 * @uml.property  name="aufgabe"
	 * @uml.associationEnd  multiplicity="(0 -1)" aggregation="composite" inverse="prüfung:pharao.domain.Aufgabe"
	 */
	private Collection<Aufgabe> aufgabe;

	private int id;

	/**
	 * enthält den Prüfung.TYP_* -Wert der Prüfung
	 * @uml.property  name="intTyp"
	 */
	private int intTyp = typ_silber;

	/**
	 * @uml.property  name="ort"
	 * @uml.associationEnd  inverse="prüfung:pharao.domain.Ort"
	 */
	private Ort ort;

	/**
	 * Getter of the property <tt>aufgabe</tt>
	 * @return  Returns the aufgabe.
	 * @uml.property  name="aufgabe"
	 */
	@OneToMany
	public Collection<Aufgabe> getAufgabe() {
		return aufgabe;
	}

	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}

	/** 
	 * Getter of the property <tt>intSchwierigkeitsgrad</tt>
	 * @return  Returns the intSchwierigkeitsgrad.
	 * @uml.property  name="intTyp"
	 */
	public int getIntTyp() {
		return intTyp;
	}

	/**
	 * Getter of the property <tt>ort</tt>
	 * @return  Returns the ort.
	 * @uml.property  name="ort"
	 */
	@OneToOne
	public Ort getOrt() {
		return ort;
	}

	/**
	 * Setter of the property <tt>aufgabe</tt>
	 * @param aufgabe  The aufgabe to set.
	 * @uml.property  name="aufgabe"
	 */
	public void setAufgabe(Collection<Aufgabe> aufgabe) {
		this.aufgabe = aufgabe;
	}

	public void setId(int id) {
		this.id = id;
	}

	/** 
	 * Setter of the property <tt>intSchwierigkeitsgrad</tt>
	 * @param intSchwierigkeitsgrad  The intSchwierigkeitsgrad to set.
	 * @uml.property  name="intTyp"
	 */
	public void setIntTyp(int intTyp) {
		this.intTyp = intTyp;
	}

	/**
	 * Setter of the property <tt>ort</tt>
	 * @param ort  The ort to set.
	 * @uml.property  name="ort"
	 */
	public void setOrt(Ort ort) {
		this.ort = ort;
	}

}
